<?php

if (!verifica_permissao_usuario(adm_permissao_documentos) && !verifica_permissao_usuario(permissao_documentos) && !verifica_permissao_usuario(permissao_admin)) {
    echo '<meta HTTP-EQUIV="REFRESH" content="0; url=home.php">';
    exit();
}

define('URL_VER_DOCS', 'home.php?module=admin/documentos&selecionado=ver_docs');
define('URL_ADD_DOC', 'home.php?module=admin/documentos&selecionado=adicionar_doc');
define('URL_ADD_FICHEIRO', 'home.php?module=admin/documentos&selecionado=add_ficheiro');
define('URL_VER_FICHEIROS', 'home.php?module=admin/documentos&selecionado=ver_ficheiros');

function adicionar_doc() {
    if (strstr($_SERVER['REQUEST_URI'], '&alerta') != false) {
        $_SERVER['REQUEST_URI'] = URL_ADD_DOC;
    }
//
//////////SALVAR CADASTRO:
    //Verificações antes de salvar o novo cadastro:
    if ($_REQUEST[enviado]) {
        $url_doc = $_FILES['url_doc']['name'];
        //Verifica se há algum campo vazio:
        if (empty($_REQUEST[titulo]) || empty($_REQUEST[categoria]) || ($_REQUEST[grupo] != 'todos' && empty($_REQUEST[pagina])) || empty($_REQUEST[data]) || empty($url_doc)) {
            if (empty($url_doc)) {
                alerta("Por favor selecione um arquivo para enviar.", "add_doc_failed", "vermelho");
            } else if ($_REQUEST[grupo] != 'todos' && empty($_REQUEST[pagina])) {
                alerta("Todos os documentos de ficheiros devem ser numerados por p&aacute;ginas.", "add_doc_failed", "vermelho");
            } else {
                alerta("O documento n&atilde;o foi enviado. Por favor complete o formul&aacute;rio corretamente.", "add_doc_failed", "vermelho");
            }
        }
        //Outras verificações e se tudo ok, tenta salvar:
        else {
            //Verifica se existe outro documento com o mesmo titulo ja cadastrado.
            $query1 = 'SELECT * FROM arquivo_eletronico WHERE titulo="' . $_REQUEST[titulo] . '"';
            $result1 = mysql_db_query(db, $query1);
            if (mysql_num_rows($result1)) {
                $erro = true;
                alerta('J&aacute; existe outro documento com este t&iacute;tulo.', 'add_doc_failed', 'vermelho');
            }
            //Verifica se existe outro documento com o mesmo url ja cadastrado.
            $query2 = 'SELECT * FROM arquivo_eletronico WHERE url_doc="' . $_REQUEST[url_doc] . '"';
            $result2 = mysql_db_query(db, $query2);
            if (mysql_num_rows($result2)) {
                $erro = true;
                alerta('Existe outro arquivo com o nome de "' . $_REQUEST[url_doc] . '" cadastrado no sistema.', 'add_doc_failed', 'vermelho');
            }
            //Verifica se existe outro documento com a mesma pagina no grupo de docs.
            $query3 = 'SELECT * FROM arquivo_eletronico WHERE grupo="' . $_REQUEST[grupo] . '" AND pagina="' . $_REQUEST[pagina] . '"';
            $result3 = mysql_db_query(db, $query3);
            if (mysql_num_rows($result3)) {
                $erro = true;
                alerta('Outro documento deste ficheiro j&aacute; est&aacute; marcado como p&aacute;gina ' . $_REQUEST[pagina], 'add_doc_failed', 'vermelho');
            }
            //Depois de verificado, tenta salvar o novo cadastro:
            if (empty($erro)) {
                $target_path = 'uploads/arquivo/' . UTF8_encode($_FILES['url_doc']['name']);

                if (move_uploaded_file($_FILES['url_doc']['tmp_name'], $target_path)) {
                    $data_array = explode('/', $_REQUEST[data]);
                    $dia = $data_array[0];
                    $mes = $data_array[1];
                    $ano = $data_array[2];

                    $add_doc_query = mysql_db_query(db, 'INSERT INTO arquivo_eletronico VALUES (
                                                    "", 
                                                    "' . $_REQUEST[titulo] . '", 
                                                    "' . $_REQUEST[categoria] . '", 
                                                    "' . ($_REQUEST[grupo] == 'todos' ? 'Sem ficheiro(avulso)' : $_REQUEST[grupo]) . '", 
                                                    "' . ($_REQUEST[grupo] == 'todos' ? '' : $_REQUEST[pagina]) . '", 
                                                    "' . $dia . '", 
                                                    "' . $mes . '", 
                                                    "' . $ano . '", 
                                                    "' . $_FILES['url_doc']['name'] . '")');

                    if ($add_doc_query) {
                        $link = str_replace('adicionar_doc', 'ver_docs', $_SERVER['REQUEST_URI']);
                        alerta('Documento enviado com sucesso.<br/><a style="margin-left:190px;" href="' . $link . '"><small>Visualizar documentos</small></a>', "add_doc_success", "verde");
                    } else {
                        @unlink($target_path);
                        alerta("Houve um problema com o registro de dados. O documento n&atilde;o foi enviado.", "add_doc_failed", "vermelho");
                    }
                } else {
                    alerta("Ocorreu um erro. O documento n&atilde;o foi enviado.", "add_doc_failed", "vermelho");
                }
            }
        }
    }
//////////
//
//////////EXIBE FORMULÁRIO DE CADASTRO:
    $result_ficheiros = mysql_db_query(db, 'SELECT titulo FROM ficheiros_arquivo WHERE titulo<>"Sem ficheiro(avulso)"');
    conteudo('Adicionar Documento', datepicker() . '<center><div style="width: 60%" class="destaque"><form enctype="multipart/form-data" action="' . URL_ADD_DOC . '" method="post">
                                    <table>
                                        <tr>
                                            <td><input type="file" name="url_doc" id="url_doc" style="width:200px;"/></td>
                                            <td>&nbsp;</td>
                                        </tr>
                                        <tr>
                                            <td>&nbsp;</td>
                                            <td>&nbsp;</td>
                                        </tr>
                                        <tr>
                                            <td>&nbsp;</td>
                                            <td>&nbsp;</td>
                                        </tr>
                                        <tr>
                                            <td><lable for="titulo">T&iacute;tulo:</lable></td>
                                            <td><input type="text" name="titulo" id="titulo"/></td>
                                        </tr>
                                        <tr>
                                            <td><lable for="categoria">Categoria do documento:</lable></td>
                                            <td><input type="text" name="categoria" id="categoria"/></td>
                                        </tr>
                                        <tr>
                                            <td><lable for="grupo">Ficheiro:</lable></td>
                                            <td>' . sql_selector($result_ficheiros, 'grupo') . '</td>
                                        </tr>
                                        <tr>
                                            <td><lable for="pagina">P&aacute;gina:</lable></td>
                                            <td><input type="number" name="pagina" id="pagina"/></td>
                                        </tr>
                                        <tr>
                                            <td><lable for="data">Data do documento:</lable></td>
                                            <td><input type="text" name="data" id="datepicker"/></td>
                                        </tr>
                                        <tr>
                                            <td>&nbsp;</td>
                                            <td><input type="submit" value="Enviar"/></td>
                                        </tr>
                                    </table>
                                    <input type="hidden" name="MAX_FILE_SIZE" value="100000"/>
                                    <input type="hidden" name="enviado" value="true"/>
                                 </form></div></center>' . mascara_valor_custo);
//////////
}

function ver_docs() {
    if (strstr($_SERVER['REQUEST_URI'], '&alerta') != false) {
        $_SERVER['REQUEST_URI'] = URL_VER_DOCS;
    }
//
//////////AÇÔES EXCLUIR/BAIXAR:
    switch ($_REQUEST[acao]) {
        //Excluir:
        case 'excluir':
            deletar_doc($_REQUEST[id_doc], $_REQUEST[url_doc]);
            break;
        //Baixar:
        case 'baixar':
            if ($_REQUEST['baixar_ficheiro'] === 'true') {
                baixar_docs($_REQUEST['ficheiro']);
            } else {
                baixar_docs($_REQUEST['ficheiro'], $_REQUEST[id_doc]);
            }
            break;
    }
//////////
//
//////////EXIBE OS CADASTRADOS:
    //Querys de seleção do banco de dados:
    $query_arquivo_eletronico = 'SELECT * FROM arquivo_eletronico';
    if ($_REQUEST['filtro_doc_ficheiros']) {
        $query_arquivo_eletronico.= ' WHERE grupo="' . $_REQUEST['filtro_doc_ficheiros'] . '"';
    }
    $result_arquivo_eletronico = mysql_db_query(db, $query_arquivo_eletronico);

    $query_ficheiros_arquivo = 'SELECT titulo FROM ficheiros_arquivo';
    $result_ficheiros_arquivo = mysql_db_query(db, $query_ficheiros_arquivo);

    //Inicia variáveis de conteúdos de exibição:
    $page_head = 'Visualizar Documentos';
    $link_add = '<div class="destaque" style="border-radius:50px 0px 0px 50px;float:right;"><img src="style/img/acoes_gerais.png"/><a href="' . URL_ADD_DOC . '"><img class="icones" title="Adicionar Documento" src="style/img/add_document.png"/></a></div>';
    $table_content = '';
    $head_columnFilter = '<tr>
                                        <th style="width:30%;">Pesquisar t&iacute;tulos</th>
                                        <th style="width:20%;">Pesquisar categorias</th>
                                        <th style="width:20%;">Todos</th>
                                        <th style="width:10%;">P&aacute;gina</th>
                                        <th style="width:10%;">Data</th>
                                        <th style="width:10%;"></th>
                                    </tr>';

    $filtro_tabela_01 = '{type:"text",bRegex: true,bSmart: true,availableTags : [';
    $filtro_tabela_02 = '{type:"text",bRegex: true,bSmart: true,availableTags : [';
    
    //Processa os dados vindos do banco de dados aplicando-os às variáveis de conteúdo:
    if (mysql_num_rows($result_ficheiros_arquivo) != 0) {
        if (!$_REQUEST['filtro_doc_ficheiros']) {
            $filtro_tabela_03 = '{type:"select",values : ["Sem ficheiro(avulso)",';
            while ($opcao = mysql_fetch_assoc($result_ficheiros_arquivo)) {
                $filtro_tabela_03 .= '"' . $opcao[titulo] . '",';
            }
            $filtro_tabela_03 = substr($filtro_tabela_03, 0, -1) . ']}';
        } else {
            $filtro_tabela_03 = 'null';
            $head_columnFilter = '<tr>
                                        <th style="width:30%;">Pesquisar t&iacute;tulos</th>
                                        <th style="width:20%;">Pesquisar categorias</th>
                                        <th style="width:20%;"></th>
                                        <th style="width:10%;">P&aacute;gina</th>
                                        <th style="width:10%;">Data</th>
                                        <th style="width:10%;"></th>
                                    </tr>';
        }
    }
    if (mysql_num_rows($result_arquivo_eletronico) != 0) {
        while ($row = mysql_fetch_assoc($result_arquivo_eletronico)) {
            $filtro_tabela_01 .= '"' . $row[titulo] . '",';
            $filtro_tabela_02 .= '"' . $row[categoria] . '",';
            $data = $row[dia] . "/" . $row[mes] . "/" . $row[ano];
            $table_content .= '<tr>
                                    <td style="width:30%;">' . $row[titulo] . '</td>
                                    <td style="width:20%;">' . $row[categoria] . '</td>
                                    <td style="width:20%;">' . $row[grupo] . '</td>
                                    <td align="center" style="width:10%;">' . $row[pagina] . '</td>
                                    <td align="center" style="width:10%;">' . $data . '</td>
                                    <td style="width:10%;"><center>
                                        <a title="Deletar documento" href="' . URL_VER_DOCS . '&acao=excluir&id_doc=' . $row[id_doc] . '&url_doc=' . $row[url_doc] . '"><img class="acao" src="style/img/excluir.png"></a>
                                        <a title="Editar informa&ccedil;&otilde;es" href="' . URL_VER_DOCS . '&acao=editar&id_doc=' . $row[id_doc] . '&url_doc=' . $row[url_doc] . '"><img class="acao" src="style/img/editar.png"></a>
                                        <a title="Ver/baixar documento" href="' . URL_VER_DOCS . '&acao=baixar&id_doc=' . $row[id_doc] . '&ficheiro=' . $row[grupo] . '"><img class="acao" src="style/img/download.png"></a>
                                    </center></td>
                               </tr>';
        }
        $filtro_tabela_01 = substr($filtro_tabela_01, 0, -1) . ']}';
        $filtro_tabela_02 = substr($filtro_tabela_02, 0, -1) . ']}';
        $columnFilter_script = '.columnFilter({
					sPlaceHolder: "head:after",
					aoColumns:[
							' . $filtro_tabela_01 . ',
							' . $filtro_tabela_02 . ',
							' . $filtro_tabela_03 . ',
							{
								type:"number-range",
								sRangeFormat: "De {from} at&eacute; {to}"
							},
							{
								type:"date-range",
								sRangeFormat: "De {from} at&eacute; {to}"
							},
                                                        null
						  ]
				})';
    } else {
        $head_columnFilter = '';
        $columnFilter_script = '';
    }

    $dataTable_script = '<script type="text/javascript" charset="utf-8">
			$(function() {
				$("#data_table").dataTable({
                                        "aoColumns":[
                                            null,
                                            null,
                                            null,
                                            null,
                                            null,
                                            {"bSortable": false}
                                        ],
					"bJQueryUI":true,
					"sPaginationType":"full_numbers",
					"oLanguage": {
					    "sProcessing":   "Processando...",
					    "sLengthMenu":   "Mostrar _MENU_ registros",
					    "sZeroRecords":  "N&atilde;o foram encontrados resultados",
					    "sInfo":         "Mostrando de _START_ a _END_ de _TOTAL_ registros totais",
					    "sInfoEmpty":    "Mostrando de 0 a 0 de 0 registros",
					    "sInfoFiltered": "(filtrado de _MAX_ registros no total)",
					    "sInfoPostFix":  "",
					    "sSearch":       "Pesquisar:",
					    "sUrl":          "",
					    "oPaginate": {
						"sFirst":    "Primeiro",
						"sPrevious": "Anterior",
						"sNext":     "Seguinte",
						"sLast":     "&Uacute;ltimo"
					    }
					}
				})' . $columnFilter_script . '.css("width","100%");
			
			} );
			$.datepicker.regional[""].dateFormat = "dd/mm/yy";
			$.datepicker.regional[""].monthNames = ["Janeiro","Fevereiro","Mar&ccedil;o","Abril","Maio","Junho",
			"Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"];
			$.datepicker.regional[""].monthNamesShort = ["Jan","Fev","Mar","Abr","Mai","Jun",
			"Jul","Ago","Set","Out","Nov","Dez"];
			$.datepicker.regional[""].dayNamesShort = ["Dom","Seg","Ter","Qua","Qui","Sex","Sab"];
			$.datepicker.regional[""].dayNamesMin = ["Dom","Seg","Ter","Qua","Qui","Sex","Sab"];
			$.datepicker.regional[""].prevText = "&#x3c;&#x3c;M&ecirc;s anterior";
			$.datepicker.regional[""].nextText = "Pr&oacute;ximo M&ecirc;s&#x3e;&#x3e;";
			$.datepicker.regional[""].changeMonth = true;
			$.datepicker.regional[""].changeYear = true;
			$.datepicker.regional[""].yearRange = "-50:+10";
			$.datepicker.setDefaults($.datepicker.regional[""]);
		</script>';

//////////EDIÇÃO DE CADASTRO:
    if ($_REQUEST[acao] == 'editar') {
        //Verificações antes de salvar informações alteradas:
        if ($_REQUEST[edit_salvo]) {
            //Verifica se há algum campo vazio:
            if (empty($_REQUEST[titulo]) || empty($_REQUEST[categoria]) || ($_REQUEST[grupo] != 'todos' && empty($_REQUEST[pagina])) || empty($_REQUEST[data])) {
                $erro = true;
                $_SERVER['REQUEST_URI'] = URL_VER_DOCS . '&acao=editar&id_doc=' . $_REQUEST[id_doc] . '&url_doc=' . $_REQUEST[url_doc];

                if ($_REQUEST[grupo] != 'todos' && empty($_REQUEST[pagina])) {
                    alerta("Todos os documentos de ficheiros devem ser numerados por p&aacute;ginas.", "add_doc_failed", "vermelho");
                } else {
                    alerta("O documento n&atilde;o foi alterado. Por favor complete o formul&aacute;rio corretamente.", "add_doc_failed", "vermelho");
                }
            }
            //Verifica se existe outro documento com o mesmo titulo ja cadastrado.
            $query1 = 'SELECT * FROM arquivo_eletronico WHERE titulo="' . $_REQUEST[titulo] . '" AND id_doc<>' . $_REQUEST[id_doc];
            $result1 = mysql_db_query(db, $query1);
            if (mysql_num_rows($result1)) {
                $erro = true;
                $_SERVER['REQUEST_URI'] = URL_VER_DOCS . '&acao=editar&id_doc=' . $_REQUEST[id_doc] . '&url_doc=' . $_REQUEST[url_doc];
                alerta('J&aacute; existe outro documento com este t&iacute;tulo.', 'edit_doc_failed', 'vermelho');
            }
            //Verifica se existe outro documento com a mesma pagina no grupo de docs.
            $query3 = 'SELECT * FROM arquivo_eletronico WHERE (grupo="' . $_REQUEST[grupo] . '" AND pagina="' . $_REQUEST[pagina] . '") AND id_doc<>' . $_REQUEST[id_doc];
            $result3 = mysql_db_query(db, $query3);
            if (mysql_num_rows($result3)) {
                $erro = true;
                $_SERVER['REQUEST_URI'] = URL_VER_DOCS . '&acao=editar&id_doc=' . $_REQUEST[id_doc] . '&url_doc=' . $_REQUEST[url_doc];
                alerta('Outro documento deste ficheiro j&aacute; est&aacute; marcado como p&aacute;gina ' . $_REQUEST[pagina], 'edit_doc_failed', 'vermelho');
            }
        }

        //Depois de verificadas, tenta salvar as informações alteradas:
        if ($_REQUEST[edit_salvo] && empty($erro)) {
            edit_doc($_REQUEST[id_doc], $_REQUEST[url_doc]);
        }
        //Exibe o formulário de edição:
        else {
            $page_head = 'Editar Documento';
            $link_add = '';
            $head_columnFilter = '';
            $dataTable_script = '<script type="text/javascript" charset="utf-8">
			$(function() {
				$("#data_table").dataTable({
					"bJQueryUI":true,
                                        "bFilter": false,
                                        "bPaginate": false,
                                        "bLengthChange":false,
                                        "bInfo":false,
                                        "bSort":false,
					"sPaginationType":"full_numbers",
					"oLanguage": {
					    "sProcessing":   "Processando...",
					    "sLengthMenu":   "Mostrar _MENU_ registros",
					    "sZeroRecords":  "N&atilde;o foram encontrados resultados",
					    "sInfo":         "",
					    "sInfoEmpty":    "",
					    "sInfoFiltered": "(filtrado de _MAX_ registros no total)",
					    "sInfoPostFix":  "",
					    "sSearch":       "Pesquisar:",
					    "sUrl":          "",
					    "oPaginate": {
						"sFirst":    "Primeiro",
						"sPrevious": "Anterior",
						"sNext":     "Seguinte",
						"sLast":     "&Uacute;ltimo"
					    }
					}
				}).css("width","100%");
			
			} );
			$.datepicker.regional[""].dateFormat = "dd/mm/yy";
			$.datepicker.regional[""].monthNames = ["Janeiro","Fevereiro","Mar&ccedil;o","Abril","Maio","Junho",
			"Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"];
			$.datepicker.regional[""].monthNamesShort = ["Jan","Fev","Mar","Abr","Mai","Jun",
			"Jul","Ago","Set","Out","Nov","Dez"];
			$.datepicker.regional[""].dayNamesShort = ["Dom","Seg","Ter","Qua","Qui","Sex","Sab"];
			$.datepicker.regional[""].dayNamesMin = ["Dom","Seg","Ter","Qua","Qui","Sex","Sab"];
			$.datepicker.regional[""].prevText = "&#x3c;&#x3c;M&ecirc;s anterior";
			$.datepicker.regional[""].nextText = "Pr&oacute;ximo M&ecirc;s&#x3e;&#x3e;";
			$.datepicker.regional[""].changeMonth = true;
			$.datepicker.regional[""].changeYear = true;
			$.datepicker.regional[""].yearRange = "-50:+10";
			$.datepicker.setDefaults($.datepicker.regional[""]);
		</script>';

            $query_arquivo_eletronico = 'SELECT * FROM arquivo_eletronico WHERE id_doc="' . $_REQUEST[id_doc] . '"';
            $result_arquivo_eletronico = mysql_db_query(db, $query_arquivo_eletronico);
            $row = mysql_fetch_assoc($result_arquivo_eletronico);
            $data = $row[dia] . "/" . $row[mes] . "/" . $row[ano];

            $result_ficheiros_arquivo = mysql_db_query(db, 'SELECT titulo FROM ficheiros_arquivo WHERE titulo<>"Sem ficheiro(avulso)"');
            $table_content = '<tr>
                            <form action="' . URL_VER_DOCS . '&acao=editar&edit_salvo=true" method="post">
                            <input type="hidden" name="id_doc" value="' . $row[id_doc] . '"/>
                            <input type="hidden" name="url_doc" value="' . $row[url_doc] . '"/>
                            <td style="width:30%;"><center><input style="width:90%;" type="text" id="titulo" name="titulo" value="' . $row[titulo] . '"/></center></td>
                            <td style="width:20%;"><center><input style="width:90%;" type="text" id="categoria" name="categoria" value="' . $row[categoria] . '"/></center></td>
                            <td style="width:20%;"><center>' . sql_selector($result_ficheiros_arquivo, 'grupo', '90%', 'Selecione', $row[grupo]) . '</center></td>
                            <td style="width:10%;"><center><input style="width:90%;" type="number" id="pagina" name="pagina" value="' . $row[pagina] . '"/></center></td>
                            <td style="width:10%;"><center><input style="width:90%;" type="text" id="datepicker" name="data" value="' . $data . '"/></center></td>
                            <td style="width:10%;"><center><input type="submit" id="bt_editar" value="Salvar"></center></td>
                            </form>
                          </tr>' . mascara_valor_custo;
        }
    }
//////////
    conteudo($page_head, datepicker() . $link_add . $dataTable_script . '<div style="margin-top:105px;margin-left:20px;margin-right:20px;"><table id="data_table" border="0" width="100%"><thead>' . $head_columnFilter . '
                                    <tr>
                                        <th style="width:30%;">T&iacute;tulo:</th>
                                        <th style="width:20%;">Categoria:</th>
                                        <th style="width:20%;">Ficheiro:</th>
                                        <th style="width:10%;">P&aacute;gina:</th>
                                        <th style="width:10%;">Data:</th>
                                        <th style="width:10%;">A&ccedil;&otilde;es:</th>
                                    </tr>
                                 </thead><tbody>' . $table_content . '</tbody></table></div><br/>');
}

//////////EXCLUIR CADASTRO:
function deletar_doc($id_doc, $url_doc) {
    //Pergunta ao usuário se realmente deseja excluir o cadastro:
    if (!$_REQUEST[confirma_del]) {
        dialog_sim_nao('Deseja realmente excluir o seguinte arquivo: ' . $url_doc . '?', $_SERVER['REQUEST_URI'] . '&confirma_del=true', 'Deletar arquivo?', '');
    }
    //Exclui o cadastro do banco de dados e deleta o arquivo:
    else {
        $_SERVER['REQUEST_URI'] = URL_VER_DOCS;
        $query_select = 'SELECT * FROM arquivo_eletronico WHERE id_doc="' . $id_doc . '"';
        $query_selecionada = mysql_db_query(db, $query_select);
        $select = mysql_fetch_assoc($query_selecionada);
        $arquivo = utf8_encode($select[url_doc]);
        if (@unlink('uploads/arquivo/' . $arquivo)) {
            $query = 'DELETE FROM arquivo_eletronico WHERE id_doc="' . $id_doc . '"';
            $del_doc_query = mysql_db_query(db, $query);

            if ($del_doc_query) {
                alerta('O seguinte documento foi excluído com sucesso: ' . $url_doc, 'del_doc_success', 'verde');
            } else {
                alerta('O seguinte documento não pôde ser excluído: ' . $url_doc, 'del_doc_failed', 'vermelho');
            }
        } else {
            alerta('O seguinte documento não pôde ser excluído: ' . $url_doc, 'del_doc_failed', 'vermelho');
        }
    }
}

function edit_doc($id_doc, $url_doc) {
    $_SERVER['REQUEST_URI'] = URL_VER_DOCS;

    $data_array = explode('/', $_REQUEST[data]);
    $dia = $data_array[0];
    $mes = $data_array[1];
    $ano = $data_array[2];

    $query = 'UPDATE arquivo_eletronico SET 
                titulo="' . $_REQUEST[titulo] . '", 
                categoria="' . $_REQUEST[categoria] . '", 
                grupo="' . ($_REQUEST[grupo] == 'todos' ? 'Sem ficheiro(avulso)' : $_REQUEST[grupo]) . '", 
                pagina="' . ($_REQUEST[grupo] == 'todos' ? '' : $_REQUEST[pagina]) . '", 
                dia="' . $dia . '", 
                mes="' . $mes . '", 
                ano="' . $ano . '" 
              WHERE id_doc=' . $id_doc;
    $edit_doc_query = mysql_db_query(db, $query);

    if ($edit_doc_query) {
        alerta('O documento "' . $url_doc . '" foi alterado com sucesso.', 'edit_doc_success', 'verde');
    } else {
        alerta('Ocorreu um erro. O documento "' . $url_doc . '" n&atilde;o foi alterado.', 'edit_doc_failed', 'vermelho');
    }
}

function add_ficheiro() {
    if (strstr($_SERVER['REQUEST_URI'], '&alerta') != false) {
        $_SERVER['REQUEST_URI'] = URL_ADD_FICHEIRO;
    }

    if ($_REQUEST[enviado]) {
        if (empty($_REQUEST[titulo])) {
            alerta("Digite um nome para o ficheiro", 'add_ficheiro_failed', 'vermelho');
        } else {
            //Verifica se existe outro ficheiro com o mesmo titulo ja cadastrado.
            $query = 'SELECT * FROM ficheiros_arquivo WHERE titulo="' . $_REQUEST[titulo] . '"';
            $result = mysql_db_query(db, $query);
            if (mysql_num_rows($result)) {
                $erro = true;
                alerta('J&aacute; existe outro ficheiro com este t&iacute;tulo.', 'add_ficheiro_failed', 'vermelho');
            }

            if (empty($erro)) {
                $add_fic_query = mysql_db_query(db, 'INSERT INTO ficheiros_arquivo VALUES("", "' . $_REQUEST[titulo] . '")');

                if ($add_fic_query) {
                    $_SERVER['REQUEST_URI'] = URL_ADD_FICHEIRO;
                    $link = URL_VER_FICHEIROS;
                    alerta('O ficheiro foi criado com sucesso.<br/><a style="margin-left:190px;" href="' . $link . '"><small>Voltar para ficheiros</small></a>', 'add_ficheiro_success', 'verde');
                } else {
                    alerta("Houve uma falha. N&atilde;o foi poss&iacute;vel criar o ficheiro.", 'add_ficheiro_failed', 'vermelho');
                }
            }
        }
    }
    conteudo('<img src="style/img/add.png" class="tit_icons"/>Criar Novo Ficheiro', '<center><div class="destaque" style="width: 60%;"><form action="' . URL_ADD_FICHEIRO . '" method="post">
                                            <table>
                                                <tr>
                                                    <td>T&iacute;tulo: </td>
                                                    <td><input type="text" name="titulo"/></td>
                                                    <td><input type="submit" value="Enviar"/></td>
                                                </tr>
                                            </table>
                                            <input type="hidden" name="enviado" value="true"/>
                                       </form></div></center>');
}

function ver_ficheiros() {
    if (strstr($_SERVER['REQUEST_URI'], '&alerta') != false) {
        $_SERVER['REQUEST_URI'] = URL_VER_FICHEIROS;
    }

//
//////////AÇÔES EXCLUIR/BAIXAR:
    switch ($_REQUEST[acao]) {
        //Excluir:
        case 'excluir':
            del_ficheiro($_REQUEST[id], $_REQUEST[titulo]);
            break;
        //Baixar:
        case 'baixar':
            baixar_docs($_REQUEST[titulo]);
            break;
    }

//////////
//
//////////EXIBE OS CADASTRADOS:
    //Querys de seleção do banco de dados:
    $ficheiro_titulo = str_replace(" ", '%', $_REQUEST['filtro_fich_titulo']);
    $query_ficheiros_arquivo = 'SELECT * FROM ficheiros_arquivo' . (empty($_REQUEST['filtro_fich_titulo']) || $_REQUEST['filtro_fich_titulo'] == '' ? '' : ' WHERE titulo LIKE "%' . $ficheiro_titulo . '%"');
    $result_ficheiros_arquivo = mysql_db_query(db, $query_ficheiros_arquivo);

    //Inicia apêndices de exibição:
    $page_head = 'Meus Ficheiros';
    $acao_novo = '<div class="destaque" style="border-radius:50px 0px 0px 50px;float:right;"><img src="style/img/acoes_gerais.png"/><a href="' . URL_ADD_FICHEIRO . '"><img class="icones" title="Criar novo ficheiro" src="style/img/new_folder.png"/></a></div>';
    $table_content = '';
    $head_columnFilter = '<tr>
                                        <th style="width:74%;">Pesquisar t&iacute;tulos</th>
                                        <th style="width:11%;">Qtde. p&aacute;ginas</th>
                                        <th style="width:15%;"></th>
                                    </tr>';

    //Processa os dados vindos do banco de dados:
    $filtro_tabela_01 = 'type:"text",bRegex: true,bSmart: true,availableTags : [';
    if (mysql_num_rows($result_ficheiros_arquivo) != 0) {
        while ($row = mysql_fetch_assoc($result_ficheiros_arquivo)) {
            $filtro_tabela_01 .= '"' . $row[titulo] . '",';
            $file_count = 0;
            $query_arquivo_eletronico = 'SELECT * FROM arquivo_eletronico WHERE grupo="' . $row[titulo] . '"';
            $result_arquivo_eletronico = mysql_db_query(db, $query_arquivo_eletronico);
            if (mysql_num_rows($result_arquivo_eletronico) != 0) {
                while (mysql_fetch_assoc($result_arquivo_eletronico)) {
                    $file_count++;
                }
            }
            $table_content .= '<tr>
                                    <td style="width:74%;">' . $row[titulo] . '</td>
                                    <td align="center" style="width:11%;">' . $file_count . '</td>
                                    <td style="width:15%;"><center>
                                        <a title="Deletar ficheiro" href="' . URL_VER_FICHEIROS . '&acao=excluir&id=' . $row[id] . '&titulo=' . $row[titulo] . '"><img class="acao" src="style/img/excluir.png"></a>
                                        <a title="Editar ficheiro" href="' . URL_VER_FICHEIROS . '&acao=editar&id=' . $row[id] . '&titulo=' . $row[titulo] . '"><img class="acao" src="style/img/editar.png"></a>
                                        <a title="Listar documentos" href="' . URL_VER_DOCS . '&filtro_doc_ficheiros=' . $row[titulo] . '&titulo=' . $row[titulo] . '"><img class="acao" src="style/img/listar_docs.png"></a>
                                        <a title="Ver/Baixar documentos" href="' . URL_VER_FICHEIROS . '&acao=baixar&titulo=' . $row[titulo] . '"><img class="acao" src="style/img/download.png"></a>
                                    </center></td>
                               </tr>';
        }
        $filtro_tabela_01 = substr($filtro_tabela_01, 0, -1) . ']';
        $columnFilter_script = '.columnFilter({
					sPlaceHolder: "head:after",
					aoColumns:[
							{' . $filtro_tabela_01 . '},
							{
								type:"number-range",
								sRangeFormat: "De {from} at&eacute; {to}"
							},
                                                        null
						  ]
				})';
    } else {
        $head_columnFilter = '';
        $columnFilter_script = '';
    }

    $dataTable_script = '<script type="text/javascript" charset="utf-8">
			$(function() {
				$("#data_table").dataTable({
                                        "aoColumns":[
                                            null,
                                            null,
                                            {"bSortable": false}
                                        ],
					"bJQueryUI":true,
					"sPaginationType":"full_numbers",
					"oLanguage": {
					    "sProcessing":   "Processando...",
					    "sLengthMenu":   "Mostrar _MENU_ registros",
					    "sZeroRecords":  "N&atilde;o foram encontrados resultados",
					    "sInfo":         "Mostrando de _START_ a _END_ de _TOTAL_ registros totais",
					    "sInfoEmpty":    "Mostrando de 0 a 0 de 0 registros",
					    "sInfoFiltered": "(filtrado de _MAX_ registros no total)",
					    "sInfoPostFix":  "",
					    "sSearch":       "Pesquisar:",
					    "sUrl":          "",
					    "oPaginate": {
						"sFirst":    "Primeiro",
						"sPrevious": "Anterior",
						"sNext":     "Seguinte",
						"sLast":     "&Uacute;ltimo"
					    }
					}
				})'.$columnFilter_script.'.css("width","100%");
			
			} );
			$.datepicker.regional[""].dateFormat = "dd/mm/yy";
			$.datepicker.regional[""].monthNames = ["Janeiro","Fevereiro","Mar&ccedil;o","Abril","Maio","Junho",
			"Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"];
			$.datepicker.regional[""].monthNamesShort = ["Jan","Fev","Mar","Abr","Mai","Jun",
			"Jul","Ago","Set","Out","Nov","Dez"];
			$.datepicker.regional[""].dayNamesShort = ["Dom","Seg","Ter","Qua","Qui","Sex","Sab"];
			$.datepicker.regional[""].dayNamesMin = ["Dom","Seg","Ter","Qua","Qui","Sex","Sab"];
			$.datepicker.regional[""].prevText = "&#x3c;&#x3c;M&ecirc;s anterior";
			$.datepicker.regional[""].nextText = "Pr&oacute;ximo M&ecirc;s&#x3e;&#x3e;";
			$.datepicker.regional[""].changeMonth = true;
			$.datepicker.regional[""].changeYear = true;
			$.datepicker.regional[""].yearRange = "-50:+10";
			$.datepicker.setDefaults($.datepicker.regional[""]);
		</script>';

//////////EDIÇÃO DE CADASTRO:
    if ($_REQUEST[acao] == 'editar') {
        $file_count = 0;

        //Verificações antes de salvar informações alteradas:
        if ($_REQUEST[edit_ficheiro]) {
            //Verifica se há algum campo vazio:
            if (empty($_REQUEST[titulo])) {
                $erro = true;
                $_SERVER['REQUEST_URI'] = URL_VER_FICHEIROS . '&acao=editar&id=' . $_REQUEST[id];
                alerta("Digite um nome para o ficheiro", 'add_ficheiro_failed', 'vermelho');
            }
            //Verifica se existe outro ficheiro com o mesmo titulo ja cadastrado.
            $query = 'SELECT * FROM ficheiros_arquivo WHERE titulo="' . $_REQUEST[titulo] . '" AND id<>' . $_REQUEST[id];
            $result = mysql_db_query(db, $query);
            if (mysql_num_rows($result)) {
                $erro = true;
                $_SERVER['REQUEST_URI'] = URL_VER_FICHEIROS . '&acao=editar&id=' . $_REQUEST[id];
                alerta('J&aacute; existe outro ficheiro com este t&iacute;tulo.', 'add_ficheiro_failed', 'vermelho');
            }
        }

        //Depois de verificadas, tenta salvar as informações alteradas:
        if ($_REQUEST[edit_ficheiro] && empty($erro)) {
            edit_ficheiro($_REQUEST[id], $_REQUEST[titulo]);
        }
        //Exibe o formulário de edição:
        else {
            $page_head = 'Editar Ficheiro';
            $acao_novo = '';
            $head_columnFilter = '';
            $dataTable_script = '<script type="text/javascript" charset="utf-8">
			$(function() {
				$("#data_table").dataTable({
					"bJQueryUI":true,
                                        "bFilter": false,
                                        "bPaginate": false,
                                        "bLengthChange":false,
                                        "bInfo":false,
                                        "bSort":false,
					"sPaginationType":"full_numbers",
					"oLanguage": {
					    "sProcessing":   "Processando...",
					    "sLengthMenu":   "Mostrar _MENU_ registros",
					    "sZeroRecords":  "N&atilde;o foram encontrados resultados",
					    "sInfo":         "",
					    "sInfoEmpty":    "",
					    "sInfoFiltered": "(filtrado de _MAX_ registros no total)",
					    "sInfoPostFix":  "",
					    "sSearch":       "Pesquisar:",
					    "sUrl":          "",
					    "oPaginate": {
						"sFirst":    "Primeiro",
						"sPrevious": "Anterior",
						"sNext":     "Seguinte",
						"sLast":     "&Uacute;ltimo"
					    }
					}
				}).css("width","100%");
			
			} );
			$.datepicker.regional[""].dateFormat = "dd/mm/yy";
			$.datepicker.regional[""].monthNames = ["Janeiro","Fevereiro","Mar&ccedil;o","Abril","Maio","Junho",
			"Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"];
			$.datepicker.regional[""].monthNamesShort = ["Jan","Fev","Mar","Abr","Mai","Jun",
			"Jul","Ago","Set","Out","Nov","Dez"];
			$.datepicker.regional[""].dayNamesShort = ["Dom","Seg","Ter","Qua","Qui","Sex","Sab"];
			$.datepicker.regional[""].dayNamesMin = ["Dom","Seg","Ter","Qua","Qui","Sex","Sab"];
			$.datepicker.regional[""].prevText = "&#x3c;&#x3c;M&ecirc;s anterior";
			$.datepicker.regional[""].nextText = "Pr&oacute;ximo M&ecirc;s&#x3e;&#x3e;";
			$.datepicker.regional[""].changeMonth = true;
			$.datepicker.regional[""].changeYear = true;
			$.datepicker.regional[""].yearRange = "-50:+10";
			$.datepicker.setDefaults($.datepicker.regional[""]);
		</script>';

            $query_ficheiros_arquivo = 'SELECT * FROM ficheiros_arquivo WHERE id=' . $_REQUEST[id];
            $result_ficheiros_arquivo = mysql_db_query(db, $query_ficheiros_arquivo);
            $row = mysql_fetch_assoc($result_ficheiros_arquivo);

            $query_arquivo_eletronico = 'SELECT * FROM arquivo_eletronico WHERE grupo="' . $row[titulo] . '"';
            $result_arquivo_eletronico = mysql_db_query(db, $query_arquivo_eletronico);
            if (mysql_num_rows($result_arquivo_eletronico) != 0) {
                while (mysql_fetch_assoc($result_arquivo_eletronico)) {
                    $file_count++;
                }
            }
            $table_content = '<tr>
                                    <form action="' . URL_VER_FICHEIROS . '&acao=editar&edit_ficheiro=true" method="post">
                                        <input type="hidden" name="id" value="' . $row[id] . '"/>
                                        <td style="width:74%;"><input style="width:99%;" type="text" name="titulo" value="' . $row[titulo] . '"/></td>
                                        <td style="width:11%;"><center>' . $file_count . '</center></td>
                                        <td style="width:15%;"><center><input type="submit" value="Salvar"/></center></td>
                                    </form>
                              </tr>';
        }
    }
//////////
    conteudo($page_head, $acao_novo . $dataTable_script . '<div style="margin-top:105px;margin-left:20px;margin-right:20px;"><table id="data_table" border="0" width="100%"><thead>' . $head_columnFilter . '
                                    <tr>
                                        <th style="width:74%;">T&iacute;tulo do ficheiro:</th>
                                        <th style="width:11%;">Qtde. p&aacute;ginas:</th>
                                        <th style="width:15%;">A&ccedil;&otilde;es:</th>
                                    </tr>
                                 </thead></tbody>' . $table_content . '</tbody></table></div><br/>');
}

function del_ficheiro($id, $titulo) {
    if (!$_REQUEST[confirma_del]) {
        dialog_sim_nao('Todos os arquivos contidos em "' . $titulo . '" ser&atilde;o exclu&iacute;dos. Deseja realmente excluir o ficheiro?', $_SERVER['REQUEST_URI'] . '&confirma_del=true', 'Deletar arquivo?', '');
    } else {
        $_SERVER['REQUEST_URI'] = URL_VER_FICHEIROS;
        $query_select_files = mysql_db_query(db, 'SELECT * FROM ficheiros_arquivo WHERE id="' . $id . '"');
        $select_files = mysql_fetch_assoc($query_select_files);

        $query_select = 'SELECT * FROM arquivo_eletronico WHERE grupo="' . $select_files[titulo] . '"';
        $query_selecionada = mysql_db_query(db, $query_select);
        while ($select = mysql_fetch_assoc($query_selecionada)) {

            $arquivo = utf8_encode($select[url_doc]);
            if (@unlink('uploads/arquivo/' . $arquivo)) {
                $query_del_file = 'DELETE FROM arquivo_eletronico WHERE id_doc="' . $select[id_doc] . '"';
                $del_doc_query = mysql_db_query(db, $query_del_file);

                if ($del_doc_query) {
                    //  alerta('O seguinte documento foi excluído com sucesso: ' . $url_doc, 'del_doc_success', 'verde');
                }
            }
        }
        $query_del_ficheiro = mysql_db_query(db, 'DELETE FROM ficheiros_arquivo WHERE id="' . $id . '"');
        if ($query_del_ficheiro) {
            ///for
            if (@unlink('uploads/arquivo/' . $url_doc)) {
                $query = 'DELETE FROM arquivo_eletronico WHERE id_doc="' . $id_doc . '"';
                $del_doc_query = mysql_db_query(db, $query);
            }
            ///
            alerta('O ficheiro foi exclu&iacute;do com sucesso.', 'del_ficheiro_success', 'verde');
        } else {
            alerta('Houve um problema e o ficheiro "' . $titulo . '" n&atilde;o foi exclu&iacute;do.', 'del_ficheiro_failed', 'vermelho');
        }
    }
}

function edit_ficheiro($id, $titulo) {
    $_SERVER['REQUEST_URI'] = URL_VER_FICHEIROS;

    $edit_query = mysql_db_query(db, 'UPDATE ficheiros_arquivo SET titulo= "' . $titulo . '" WHERE id="' . $id . '";');

    if ($edit_query) {
        alerta('O ficheiro foi alterado com sucesso.', 'edit_ficheiro_success', 'verde');
    } else {
        alerta('Houve uma falha. O ficheiro n&atilde;o foi alterado.', 'edit_ficheiro_failed', 'vermelho');
    }
}

function baixar_docs($titulo_ficheiro, $id_doc = null) {
    $lista_arquivos = array();
    $novos_nomes = array();
    $t_zip = 'uploads/arquivo/temp/' . utf8_encode($titulo_ficheiro) . '.zip';

    if ($id_doc == null) {
        $query = mysql_db_query(db, 'SELECT * FROM arquivo_eletronico WHERE grupo="' . $titulo_ficheiro . '"');
        if ($query) {
            if (mysql_num_rows($query) != 0) {
                while ($row = mysql_fetch_assoc($query)) {
                    $lista_arquivos[] = 'uploads/arquivo/' . utf8_encode($row[url_doc]);
                    $titulo = $row[titulo];
                    $novos_nomes[] = '0' . $row[pagina] . '-' . $titulo . '.' . substr($row[url_doc], -3);
                    $listagem_concluida = true;
                }
            } else {
                alerta("Não há arquivos para serem baixados.", "baixar_doc_failed", "vermelho");
                $lista_arquivos = null;
                $novos_nomes = null;
                $t_zip = null;
                return false;
            }
        }
        $_SERVER['REQUEST_URI'] = ($_REQUEST['baixar_ficheiro'] === 'true' ? URL_VER_DOCS : URL_VER_FICHEIROS);
    } else {
        if ($titulo_ficheiro == 'Sem ficheiro(avulso)' || $_REQUEST['baixar_ficheiro'] === 'false') {
            $query = mysql_db_query(db, 'SELECT * FROM arquivo_eletronico WHERE id_doc=' . $id_doc);
            if ($query) {
                $row = mysql_fetch_assoc($query);
                $lista_arquivos[] = 'uploads/arquivo/' . utf8_encode($row[url_doc]);
                $t_zip = 'uploads/arquivo/temp/' . ($titulo_ficheiro == 'Sem ficheiro(avulso)' ? utf8_encode($row[titulo]) : utf8_encode($row[grupo])) . '.zip';
                $titulo = $row[titulo];
                if ($row[grupo] == 'Sem ficheiro(avulso)') {
                    $novos_nomes[] = $titulo . '.' . substr($row[url_doc], -3);
                } else {
                    $novos_nomes[] = '0' . $row[pagina] . '-' . $titulo . '.' . substr($row[url_doc], -3);
                }
                $listagem_concluida = true;
            }
        } else {
            $_SERVER['REQUEST_URI'] = URL_VER_DOCS;
            dialog_sim_nao("Este arquivo faz parte de um ficheiro. Deseja baixar todos os documentos deste ficheiro?", URL_VER_DOCS . '&acao=baixar&ficheiro=' . $titulo_ficheiro . '&baixar_ficheiro=true', "Baixar ficheiro completo?", URL_VER_DOCS . '&acao=baixar&ficheiro=' . $titulo_ficheiro . '&id_doc=' . $id_doc . '&baixar_ficheiro=false');
        }
    }

    if (count($lista_arquivos) && $listagem_concluida === true) {
        foreach ($novos_nomes as $key => $value) {
            $novos_nomes[$key] = toUTF8(rm_acentos(utf8_encode($value)));
        }
        if (create_zip('uploads/arquivo/', $lista_arquivos, $t_zip, $novos_nomes)) {
            echo '<meta HTTP-EQUIV="REFRESH" content="0; url=' . utf8_decode($t_zip) . '">';
        } else {
            alerta("Ocorreu um problema na cria&ccedil;&atilde;o do arquivo ZIP. Contate suporte t&eacute;cnico.", 'baixar_doc_failed', 'vermelho');
        }
    } else if ($listagem_concluida === true) {
        alerta("Houve uma falha na listagem de arquivos.", 'baixar_doc_failed', 'vermelho');
    }
}

if ($_REQUEST[selecionado] == "adicionar_doc") {
    adicionar_doc();
} else if ($_REQUEST[selecionado] == "ver_docs") {
    ver_docs();
} else if ($_REQUEST[selecionado] == "add_ficheiro") {
    add_ficheiro();
} else if ($_REQUEST[selecionado] == "ver_ficheiros") {
    ver_ficheiros();
}
echo rodape;
?>